package 类型通配符;

import java.util.ArrayList;
import java.util.List;

/*
类型通配符：<?>
List<?>:表示元素类型未知的List,他的元素可以匹配任何类型
这种带通配符的List仅表示他是各种泛型List的父类，并不能把元素添加到其中

类型通配符上限：<? extends 类型> ：类型及其子类型
类型通配符下限：<? super 类型> ：类型及其父类型
 */
public class GenericDemo {
    public static void main(String[] args) {
        List<?> list1=new ArrayList<Object>();
        List<?> list2=new ArrayList<Number>();
        List<?> list3=new ArrayList<Integer>();
        System.out.println("--------");

        //类型通配符上限
//        List<? extends Number> list= new ArrayList<Object>();Object是Number父类超过上限不行
        List<? extends Number> list4=new ArrayList<Number>();
        List<? extends Number> list5=new ArrayList<Integer>();

        //类型通配符下限
        List<? super Number> list6=new ArrayList<Object>();
//        List<? super Number> list7=new ArrayList<Integer>();Interger是Number的子类超过下限不行
        List<? super Number> list8=new ArrayList<Number>();


    }
}
